#include<iostream>
class Test
{
    public:
        Test()
        {
            std::cout<<"构造函数!\n";
    
        }
        Test(const Test& t)
        {
            std::cout<<"深拷贝构造函数！\n";
          
        }
        void operator=(const Test& t)
        {
     
            std::cout<<"赋值运算符重载深拷贝！\n";
        }
          
        ~Test()
        {
            std::cout<<"析构函数\n";
       
        }
};
//RVO优化：返回值优化：返回局部对象（右值）不会发生拷贝
//返回左值：全引用不会发生拷贝
 const Test& func( const Test& t1)//形参不能优化
{
  //  Test t;//将亡值
    //static Test t//左值无法rvo优化
    return t1;
}

int main()
{
  //将亡值：马上要释放的值
  //右值：将亡值也是右值,右值的内存可以直接被夺取
  //Test t=Test();//匿名对象：生命周期只有一行的临时对象
  //Test();
    Test t;
    const Test& t2=func(t);
    return 0;
}
